﻿
using System.Collections.Generic;
using System;
using System.Linq;
using System.ComponentModel;
using Grishko.DataTier;

using Grishko.DataTier.SqlSentence;

namespace OutdoorLib.BaseEntity.Context
{    
    public class Filter : EntitySingle
    {
        /// <summary>
        /// категория - к какому спсику привязан фильтр (сотрудники, контракты и т.д.)
        /// </summary>
        public enum ListEntityType { None, EmployeeList,ConstractionList};
        public enum ListEntityCategory { Provider, User, Client };
        ListEntityType _ListEntityType = ListEntityType.None;

        /// <summary>
        /// Тип списка хранящегося в фильтре (список сотрудников, контрактов и т.п.)
        /// </summary>
        /// <param name="sVal"></param>
        /// <returns></returns>
        public static ListEntityType ConvertStringToListEntityType(string sVal)
        {
            switch (sVal)
            {
                case "EmployeeList":
                    return ListEntityType.EmployeeList;

                case "ConstractionList":
                    return ListEntityType.ConstractionList;

                default:
                    return ListEntityType.None;
            }
        }
        
        public ListWhere Where { get; set; }
        
        /// <summary>
        /// Категория (фильтр провайдера,пользователя, агентсва)
        /// </summary>
        ListEntityCategory _ListCategory = ListEntityCategory.User;
        /// <summary>
        /// Категория (фильтр провайдера,пользователя, агентсва)
        /// </summary>
        public ListEntityCategory ListCategory { get { return _ListCategory; } set { _ListCategory = value; } }

        public override string ID // перегружен только чтобы удалить SrchItemInfo
        {
            get
            {
                return base.ID;
            }
            set
            {
                base.ID = value;
            }
        }
        
        public string Caption { get; set; }
        
        public string Describe { get; set; }
        
        /// <summary>
        /// Признак что в категории фильтров - он по умолчанию 
        /// </summary>
        public bool IsDefault { get; set; }       
        
        
        
                        

        /// <summary>
        /// ключ странички реждактирования - элемента списка 
        /// </summary>
        public virtual string ObjectPageKey { get { return string.Empty; } }
        
        /// <summary>
        /// дополнительная обработка URL - вставка нового элемента в список
        /// - позволяет измениь созданный url - вставка элемента в соответсвии со спецификой фильтра
        /// </summary>
        /// <param name="sURl"></param>
        /// <returns></returns>
        public virtual string AddUrlHandler_Insert(string sURl)
        {
            return sURl;
        }

        /// <summary>
        /// дополнительная обработка URL - редактирование нового элемента в список
        /// - позволяет измениь созданный url - вставка элемента в соответсвии со спецификой фильтра
        /// </summary>
        /// <param name="sURl"></param>
        /// <returns></returns>
        public virtual string AddUrlHandler_Edit(string sURl)
        {
            return sURl;
        }
               
        public override bool TypeMapperOn
        {
            get
            {
                return false;
            }
        }

    }

    public class FilterList : EntityList
    {
        
    }
}


